package vip.wangwenhao.service;

import vip.wangwenhao.document.BaseDocument;
import vip.wangwenhao.query.BaseQuery;
import vip.wangwenhao.page.PageResult;

import java.util.List;

/**
 * @author wwh
 */

public interface EsService<T extends BaseDocument> {


    /**
     * 创建索引
     *
     * @param clazz
     * @return
     */
    Boolean createIndex(Class<T> clazz);

    /**
     * 删除索引
     *
     * @param clazz
     * @return
     */
    Boolean deleteIndex(Class<T> clazz);

    /**
     * 添加或更新索引数据
     *
     * @param t
     * @return
     */
    Boolean index(T t);

    /**
     * 添加或更新索引数据
     *
     * @param t
     * @return
     */
    Boolean batchIndex(List<T> t);

    /**
     * 获取单个索引数据
     *
     * @param id
     * @return
     */
    T get(String id);

    /**
     * 查询所有
     * @return
     */
    List<T> queryAll();

    /**
     * 查询列表
     * @return
     */
    List<T> queryForList(T t);

    /**
     * 分页查询
     * @return
     */
    PageResult<T> queryForPage(BaseQuery<T> query);

    /**
     * 分页查询
     * @return
     */
    PageResult<T> query(BaseQuery<T> query);

    /**
     * 根据ID删除
     * @param id
     * @return
     */
    Boolean delete(String id);

}